'use strict';

const { Controller } = require('egg');
const { Op } = require('sequelize');
const serviceName = 'recharge'
class RouterController extends Controller {
  // 分页
    async index() {
        const { query, service } = this.ctx;
        let { pageNum, pageSize, user_id = '' ,start_date, end_date} = query;
        let page = Number(pageNum) || 1;
        let size = Number(pageSize) || 10;
        const where = {

        };
        if (user_id) {
            where.user_id = user_id;
        }
        if (start_date && end_date) {
            where.create_time = {
                [Op.between]: [start_date, end_date]
            }
        }
        if (start_date && !end_date) {
            where.create_time = {
                [Op.gte]: start_date
            }
        }
        if (!start_date && end_date) {
            where.create_time = {
                [Op.lte]: end_date
            }
        }
        const list = await service[serviceName].getPage(where, page, size);
        this.ctx.success(list);
    }
    async index2() {
        const { query, service } = this.ctx;
        let { pageNum, pageSize } = query;
        let page = Number(pageNum) || 1;
        let size = Number(pageSize) || 10;
        // 解析token中的user_id
        if (!this.ctx.user) {
            this.ctx.error(403);
            return;
        }
        const where = {
            user_id: this.ctx.user.id
        };
        const list = await service[serviceName].getPage(where, page, size);
        this.ctx.success(list);
    }
  // 新增
  async create() {
    const { ctx } = this;
    const data = ctx.request.body;
    await ctx.service[serviceName].create(data);
    ctx.success(data, 200);
  }
  // 修改
  async update() {
    const { ctx } = this;
    const id = ctx.params.id;
    const infos = ctx.request.body;
    if (!id) throw new Error('必须传递ID参数');
    if (Object.keys(infos).length === 0) throw new Error('请传递修改的内容');
    await ctx.service[serviceName].update(id, infos);
    ctx.success(id, 200);
  }
  // 删除
  async destroy() {
    const uid = Number(this.ctx.params.id);
    if (!uid) throw new Error('ID 有误');
    await this.ctx.service[serviceName].deleteById(uid);
    this.ctx.success(uid); // 删除成功返回被删除的用户ID
  }
  // 查看
  async show() {
    const { params, service } = this.ctx;
    const findItem = await service[serviceName].findOne(params.id);
    this.ctx.success(findItem);
  }
  // 所有列表
  async allList() {
    const { service } = this.ctx;
    const list = await service[serviceName].allList();
    this.ctx.success(list);
  }
}

module.exports = RouterController;
